GtkMenuItemAccessible: use "insert" signal
authorRyan Lortie <desrt@desrt.ca>
Fri, 4 May 2012 00:12:32 +0000 (17:12 -0700)
committerMatthias Clasen <mclasen@redhat.com>
Fri, 15 Aug 2014 14:29:48 +0000 (10:29 -0400)
Use the "insert" rather than the "add" signal to reliably detect
additions of menu items.

https://bugzilla.gnome.org/show_bug.cgi?id=372545

gtk/a11y/gtkmenuitemaccessible.c

index 46190fd48b8be905b1f033ef8d2c67112f2c6914..41cf7417b580285656f1a72b0c3a9148c09d736a 100644 (file)
@@ -38,8 +38,9 @@ static void menu_item_deselect (GtkMenuItem *item);
 static GtkWidget *get_label_from_container   (GtkWidget *container);
 static gchar     *get_text_from_label_widget (GtkWidget *widget);
 
-static gint menu_item_add_gtk    (GtkContainer   *container,
-                                  GtkWidget      *widget);
+static gint menu_item_insert_gtk (GtkMenuShell   *shell,
+                                  GtkWidget      *widget,
+                                  gint            position);
 static gint menu_item_remove_gtk (GtkContainer   *container,
                                   GtkWidget      *widget);
 
@@ -87,7 +88,7 @@ gtk_menu_item_accessible_initialize (AtkObject *obj,
   menu = gtk_menu_item_get_submenu (GTK_MENU_ITEM (data));
   if (menu)
     {
-      g_signal_connect (menu, "add", G_CALLBACK (menu_item_add_gtk), NULL);
+      g_signal_connect (menu, "insert", G_CALLBACK (menu_item_insert_gtk), NULL);
       g_signal_connect (menu, "remove", G_CALLBACK (menu_item_remove_gtk), NULL);
     }
 }
@@ -882,19 +883,18 @@ atk_selection_interface_init (AtkSelectionIface *iface)
 }
 
 static gint
-menu_item_add_gtk (GtkContainer *container,
-                   GtkWidget    *widget)
+menu_item_insert_gtk (GtkMenuShell *shell,
+                      GtkWidget    *widget,
+                      gint          position)
 {
   GtkWidget *parent_widget;
 
-  g_return_val_if_fail (GTK_IS_MENU (container), 1);
+  g_return_val_if_fail (GTK_IS_MENU (shell), 1);
 
-  parent_widget = gtk_menu_get_attach_widget (GTK_MENU (container));
+  parent_widget = gtk_menu_get_attach_widget (GTK_MENU (shell));
   if (GTK_IS_MENU_ITEM (parent_widget))
-    {
-      GTK_CONTAINER_ACCESSIBLE_CLASS (gtk_menu_item_accessible_parent_class)->add_gtk (container, widget, gtk_widget_get_accessible (parent_widget));
+    GTK_CONTAINER_ACCESSIBLE_CLASS (gtk_menu_item_accessible_parent_class)->add_gtk (GTK_CONTAINER (shell), widget, gtk_widget_get_accessible (parent_widget));
 
-    }
   return 1;
 }
 
@@ -913,6 +913,7 @@ menu_item_remove_gtk (GtkContainer *container,
     }
   return 1;
 }
+
 static void
 menu_item_select (GtkMenuItem *item)
 {